]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
volume: Add smooth scrolling to adjust output volume
authorJasper St. Pierre <jstpierre@mecheye.net>
Sun, 4 Nov 2012 15:53:23 +0000 (10:53 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Thu, 20 Dec 2012 13:40:04 +0000 (08:40 -0500)
Allow users to smoothly scroll on the volume indicator icon
to adjust the volume. Do this by simply passing the scroll
event to the slider inside the menu.

https://bugzilla.gnome.org/show_bug.cgi?id=687573

js/ui/popupMenu.js
js/ui/status/volume.js

index fd4b9280cad28113aafcd17941ecd6650612e3b7..6bcc994a9f7ac0c978d246851251d807e4d9dddb 100644 (file)
@@ -636,7 +636,7 @@ const PopupSliderMenuItem = new Lang.Class({
         return true;
     },
 
-    _onScrollEvent: function (actor, event) {
+    scroll: function(event) {
         let direction = event.get_scroll_direction();
         let delta;
 
@@ -655,10 +655,15 @@ const PopupSliderMenuItem = new Lang.Class({
         }
 
         this._value = Math.min(Math.max(0, this._value + delta), 1);
+
         this._slider.queue_repaint();
         this.emit('value-changed', this._value);
     },
 
+    _onScrollEvent: function(actor, event) {
+        this.scroll(event);
+    },
+
     _motionEvent: function(actor, event) {
         let absX, absY;
         [absX, absY] = event.get_coords();
index 99b003b6f2e0b3ad95025118bb9bd50955722388..faccf8458250a4ac2989e7e158f739fbc9024318 100644 (file)
@@ -69,26 +69,8 @@ const VolumeMenu = new Lang.Class({
         this._onControlStateChanged();
     },
 
-    scroll: function(direction) {
-        let currentVolume = this._output.volume;
-
-        if (direction == Clutter.ScrollDirection.DOWN) {
-            let prev_muted = this._output.is_muted;
-            this._output.volume = Math.max(0, currentVolume - this._volumeMax * VOLUME_ADJUSTMENT_STEP);
-            if (this._output.volume < 1) {
-                this._output.volume = 0;
-                if (!prev_muted)
-                    this._output.change_is_muted(true);
-            }
-            this._output.push_volume();
-        }
-        else if (direction == Clutter.ScrollDirection.UP) {
-            this._output.volume = Math.min(this._volumeMax, currentVolume + this._volumeMax * VOLUME_ADJUSTMENT_STEP);
-            this._output.change_is_muted(false);
-            this._output.push_volume();
-        }
-
-        this._notifyVolumeChange();
+    scroll: function(event) {
+        this._outputSlider.scroll(event);
     },
 
     _onControlStateChanged: function() {
@@ -279,6 +261,6 @@ const Indicator = new Lang.Class({
     },
 
     _onScrollEvent: function(actor, event) {
-        this._volumeMenu.scroll(event.get_scroll_direction());
+        this._volumeMenu.scroll(event);
     }
 });